﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Presentacion.Contrato.VU_05_Gestionar_Practicas_por_Materia;
using vudu.Logica.Fachada;
using vudu.ClasesDominio;

namespace vudu.Presentacion.Presentador.VU_05_Gestionar_Practicas_por_Materia
{
    public class PresentadorAgregarSeccionPractica
    {
        public IContratoAgregarSeccionPractica _vista;
        private EnlaceLogico _fachada;
        private Escuela _miEscuela;
        private List<Materia> _misMaterias;
        //String _nombre, _descripcion, _estado;
        //int _teoria, _practica;

        public PresentadorAgregarSeccionPractica(IContratoAgregarSeccionPractica vista/*, EnlaceLogico fachada*/)
        {
            _vista = vista;
            _fachada = new EnlaceLogico();// fachada;
            _miEscuela = _fachada.ArmarEscuela("informatica@esc.vudu.com");
            _vista.LabelEscuela.Text = _miEscuela.NombreEscuela;

            _misMaterias = _fachada.ObtenerMateriasActivasConSeccTeoria(_miEscuela.NombreEscuela);            
        }

        //public bool InitSecure(HttpSessionState Session)
        //{
        //    string miRol = (string)Session["rol"];
        //    if (miRol != "Escuela")
        //        return false;
        //    else
        //        return true;
        //}

        public void UnLoadDdlSeccTeoria()
        {
            ListItem myListItem = new ListItem();
            _vista.DdlSeccTeoria.Items.Clear();
            myListItem.Value = "0";
            myListItem.Text = "- Seleccionar -";
            _vista.DdlSeccTeoria.Items.Add(myListItem);
        }

        public void UnLoadDdlProfesor()
        {
            ListItem myListItem = new ListItem();
            _vista.DdlProfesor.Items.Clear();
            myListItem.Value = "0";
            myListItem.Text = "- Seleccionar -";
            _vista.DdlProfesor.Items.Add(myListItem);
        }


        protected void UnVisibleSeccTeoria()
        {
            UnLoadDdlSeccTeoria();
            UnLoadDdlProfesor();
            _vista.LabelOSeccTeoria.Visible = false;
            _vista.LabelSeccTeoria.Visible = false;
            _vista.DdlSeccTeoria.Visible = false;
            _vista.LabelHrsEstab.Visible = false;
            _vista.LabelNumHrsEstab.Visible = false;
        }

        protected void UnVisibleProfesor()
        {
            UnLoadDdlProfesor();
            _vista.LabelOProfesor.Visible = false;
            _vista.LabelProfesor.Visible = false;
            _vista.DdlProfesor.Visible = false;
        }

        protected void UnVisibleHorario()
        {
            _vista.LabelOHrsSelect.Visible = false;
            _vista.LabelHrsSelect.Visible = false;
            _vista.LabelNumHrsSelect.Visible = false;
            _vista.TableHorario.Visible = false;
        }


        protected void VisibleSeccTeoria()
        {
            _vista.LabelOSeccTeoria.Visible = true;
            _vista.LabelSeccTeoria.Visible = true;
            _vista.DdlSeccTeoria.Visible = true;
            _vista.LabelHrsEstab.Visible = true;
            _vista.LabelNumHrsEstab.Visible = true;
        }

        protected void VisibleProfesor()
        {
            _vista.LabelOProfesor.Visible = true;
            _vista.LabelProfesor.Visible = true;
            _vista.DdlProfesor.Visible = true;
        }

        protected void VisibleHorario()
        {
            _vista.LabelOHrsSelect.Visible = true;
            _vista.LabelHrsSelect.Visible = true;
            _vista.LabelNumHrsSelect.Visible = true;
            _vista.TableHorario.Visible = true;
        }


        public void LoadDdlMateria()
        {
            for (int index = 0; index < _misMaterias.Count; index++)
            {
                ListItem myListItem = new ListItem();
                myListItem.Value = _misMaterias[index].Codigo.ToString();
                myListItem.Text = _misMaterias[index].Nombre;
                _vista.DdlMateria.Items.Add(myListItem);
            }
        }

        public void LoadDdlSeccTeoria(int idMateriaSelect)
        {
            UnVisibleProfesor();
            UnVisibleHorario();
            if (idMateriaSelect == 0)
            { UnVisibleSeccTeoria(); }
            else
            {
                bool bandera = false;
                for (int index = 0; (index < _misMaterias.Count) && (!bandera); index++)
                {
                    if (_misMaterias[index].Codigo == idMateriaSelect)
                    {
                        _vista.LabelNumHrsEstab.Text = _misMaterias[index].HorasPractica.ToString() + " hora(s)";
                        bandera = true;
                    }
                }
                List<SeccionMateria> misSecciones = new List<SeccionMateria>();
                misSecciones = _fachada.ArmarListaDeSeccionesDisponibles(_miEscuela.IdEscuela, idMateriaSelect);
                string seccionCod = "00";
                for (int index = 0; index < misSecciones.Count; index++)
                {
                    ListItem myListItem = new ListItem();
                    myListItem.Value = misSecciones[index].IdSeccionMateria.ToString();
                    myListItem.Text = seccionCod + misSecciones[index].Codigo;
                    _vista.DdlSeccTeoria.Items.Add(myListItem);
                }
                VisibleSeccTeoria();
            }
        }

        public void LoadDdlProfesor(int idSeccTeoria)
        {
            if (idSeccTeoria == 0)
            {
                UnVisibleProfesor();
                UnVisibleHorario();
            }
            else
            {
                List<Profesor> misProfesores = new List<Profesor>();
                misProfesores = _fachada.ConsultarProfesores(_miEscuela.IdEscuela);
                for (int index = 0; index < misProfesores.Count; index++)
                {
                    ListItem myListItem = new ListItem();
                    //myListItem.Value = misProfesores[index].id.ToString();
                    //myListItem.Text = seccionCod + misSecciones[index].Codigo;
                    _vista.DdlSeccTeoria.Items.Add(myListItem);
                }
                VisibleProfesor();
            }
        }

        public void LoadTableHorario(int idProfesor)
        {
            if (idProfesor == 0)
            {   UnVisibleHorario(); }
            else
            {   VisibleHorario();   }
        }
    }
}